package com.masterlu.leetcode.daily.stack.simple;

import java.util.Stack;

/**
 * 文件夹操作日志搜集器
 * https://leetcode-cn.com/problems/crawler-log-folder/
 *
 * @date created in 2021/5/19 8:56
 */
public class S1598MinOperations {

    public static void main(String[] args) {
        String[] s = new String[]{"./","../","./"};
        minOperations(s);
    }

    /**
     * 利用栈结构，对字符串数组元素进行记录与操作。
     * 当是：../进行出栈操作，./不进行任何操作。其他符号进行入栈操作。
     *
     * 则回到主目录最小步骤为栈中元素数量
     * @param logs
     * @return
     */
    public static int minOperations(String[] logs) {

        Stack<String> operateStack = new Stack<>();
        for (String log : logs) {
            if ("../".equals(log) && operateStack.size() > 0){
                operateStack.pop();
            }else if (!"../".equals(log) &&!"./".equals(log)){
                operateStack.push(log);
            }
        }

        return operateStack.size();
    }

    /**
     * 不引入三方存储
     *
     *
     * 执行用时：1 ms, 在所有 Java 提交中击败了100.00%的用户
     * 内存消耗：38.2 MB, 在所有 Java 提交中击败了21.89%的用户
     * @param logs
     * @return
     */
    public static int minOperations2(String[] logs) {

        int stepCount= 0;
        for (String log : logs) {
            if ("../".equals(log) && stepCount > 0){
                stepCount --;
            }else if (!"../".equals(log) &&!"./".equals(log)){
                stepCount++;
            }
        }

        return stepCount;
    }

}
